#ifndef CDBFRECUENCIAS_H_
#define CDBFRECUENCIAS_H_
#include "CManagerFile.h"
#include "tipos.h"
#include "IObservadorEliminarTag.h"
#include <iostream>
class CDBFrecuencias : IObservadorEliminarTag
{
private:
	
	CManagerFile fileManager; 
	
public:
	
	CDBFrecuencias(CManagerTag* managerTag);
	/**
	 * Crea un tag con ese id
	 */
	//bool crearTag(DBFrecuencias::TagId tagId);
	
	/**
	 * elimina un tag con ese id
	 */
	virtual void eliminarTag(DBFrecuencias::TagId tagId);
	
	/**
	 * Aumenta la frecuencia de la palabra en el tag 
	 */
	void incrementarFrecuencia(DBFrecuencias::Palabra id,
		DBFrecuencias::TagId tagId, DBFrecuencias::Frecuencia frec);
	
	
	/**
	 * Decrementa la frecuencia de la palabra en el tag 
	 */	
	void decrementarFrecuencia(DBFrecuencias::Palabra id,
		DBFrecuencias::TagId tagId, DBFrecuencias::Frecuencia frec);
	
	/**
	 * Procesa un map Palabra,frecuencia, aumentado la frecuencia de cada una de las
	 * palabras para ese tag 
	 */	
	void procesarArticulo(DBFrecuencias::TagId tagId, DBFrecuencias::FrecuenciasRegistro articulo);
	
	/**
	 * Procesa un map Palabra,frecuencia, decrementando la frecuencia de cada una de las
	 * palabras para el tag
	 */	
	void eliminarArticulo(DBFrecuencias::TagId tagId, DBFrecuencias::FrecuenciasRegistro articulo);
	
	
	/**
	 * Carga el vector frecuencias, con las frecuencias distintas de cero de la
	 * palabra en los distintos tags 
	 */
	void consultarFrecuencias(DBFrecuencias::Palabra id, 
			DBFrecuencias::MapFrecuencias& frecuencias);
	
	virtual ~CDBFrecuencias();
};

#endif /*CDBFRECUENCIAS_H_*/
